স্প্রিং ওআরএম (Spring ORM) হল স্প্রিং ফ্রেমওয়ার্কের একটি মডিউল যা Java-তে ডাটাবেস অপারেশন সহজ করার জন্য ডিজাইন করা হয়েছে। এটি Object-Relational Mapping (ORM) টুল যেমন Hibernate, JPA ইত্যাদির সঙ্গে সংযোগ স্থাপন করতে সাহায্য করে। স্প্রিং ORM ডাটাবেস ম্যানেজমেন্টের জন্য boilerplate কোডের প্রয়োজনীয়তা হ্রাস করে এবং Spring Framework-এর অন্যান্য সুবিধার সঙ্গে ORM একীভূত করে।
Hibernate Configuration
Hibernate কী?
Hibernate হল একটি জনপ্রিয় ORM ফ্রেমওয়ার্ক যা Java-এর জন্য ডাটাবেসের সঙ্গে Object Mapping সহজ করে। এটি SQL লেখার ঝামেলা কমায় এবং ডাটাবেসের সঙ্গে কাজ করার সময় Java Objects ব্যবহারের সুযোগ দেয়।
Spring এ Hibernate Configuration
Hibernate এবং Spring ORM একত্রে ব্যবহার করতে গেলে নিম্নলিখিত ধাপগুলো অনুসরণ করতে হয়:
Maven ডিপেনডেন্সি যোগ করা
Hibernate এবং Spring ORM ব্যবহার করতে হলে প্রকল্পে প্রয়োজনীয় Maven ডিপেনডেন্সি যোগ করতে হয়:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>YOUR_SPRING_VERSION</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>YOUR_HIBERNATE_VERSION</version>
</dependency>
Hibernate Configuration ফাইল
Hibernate Configuration সাধারণত hibernate.cfg.xml ফাইলে সংরক্ষিত হয়। উদাহরণ:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/your_database</property>
<property name="hibernate.connection.username">your_username</property>
<property name="hibernate.connection.password">your_password</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
SessionFactory ব্যবস্থাপনা
SessionFactory কী?
Hibernate-এ SessionFactory ডাটাবেস সংযোগ এবং সেশনের জীবনচক্র পরিচালনার জন্য ব্যবহৃত হয়। এটি একবার তৈরি হয় এবং অ্যাপ্লিকেশনের লাইফটাইম ধরে ব্যবহৃত হয়।
Spring এ SessionFactory Bean Configuration
Spring-এ Hibernate SessionFactory Bean তৈরি করার জন্য নিচের কনফিগারেশন ব্যবহার করা হয়:
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan("com.example.model");
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");
properties.put("hibernate.show_sql", "true");
properties.put("hibernate.hbm2ddl.auto", "update");
return properties;
}
Transaction Management
Transaction Management কী?
Transaction Management একটি গুরুত্বপূর্ণ ধারণা যেখানে একাধিক ডাটাবেস অপারেশন atomically কার্যকর হয়। যদি কোনো এক ধাপ ব্যর্থ হয়, তবে পুরো লেনদেনটি rollback হয়।
Spring-এ Transaction Management
Spring-এ দুটি Transaction Management পদ্ধতি রয়েছে:
- Declarative Transaction Management (Annotation-based)
- Programmatic Transaction Management (Manual Control)
Declarative Transaction Management (Annotation-based)
Spring ORM-এ সহজে Transaction পরিচালনার জন্য @Transactional অ্যানোটেশন ব্যবহার করা হয়। উদাহরণ:
@Service
@Transactional
public class EmployeeService {
@Autowired
private EmployeeDao employeeDao;
public void saveEmployee(Employee employee) {
employeeDao.save(employee);
}
}
Programmatic Transaction Management
Spring-এ প্রোগ্রামেটিক পদ্ধতিতে ট্রানজেকশন পরিচালনার জন্য TransactionTemplate ব্যবহার করা হয়:
@Autowired
private TransactionTemplate transactionTemplate;
public void saveEmployee(Employee employee) {
transactionTemplate.execute(status -> {
employeeDao.save(employee);
return null;
});
}
Spring ORM Hibernate Configuration, SessionFactory, এবং Transaction Management-এর মাধ্যমে ডাটাবেসের সঙ্গে সহজে কাজ করা যায়। এগুলো Spring Framework এবং Hibernate-এর শক্তিশালী সমন্বয় নিশ্চিত করে।
Read more